#include <iostream>

using namespace std;
/*常量成员函数
1. 常量成员函数内不能修改成员变量
2. 常量成员函数声明时加const，调用时可以加也可以不加
3. 常量对象只能调用常量成员函数
作用： 保护成员变量不被修改, 提高代码的安全性、健壮性、可读性
什么时候使用： 当一个成员函数不需要修改成员变量时，建议将其声明为常量成员函数
*/

void printString(const char * pStr)
{
    cout<<pStr<<endl;
}

class a
{
public:
    const int x = 100;//C++11
    int y;
    a():x(101),y(102)//C++98
    {
        y = 103;
    }

    void print() const
    {
        cout<<y<<endl;
    }
    void print1()
    {
        cout<<y<<endl;
    }
};

int main()
{
    a a1;
    const a a2; //创建常量对象
    a2.print(); //调用常量成员函数
    //a2.print1(); //错误 调用非常量成员函数
    printString("hello");

    cout<<a1.x<<endl;
    a1.print();
    return 0;
}